--- /dev/null
+From: Jeremy Bicha <jeremy.bicha@canonical.com>
+Date: Thu, 12 Jan 2023 08:47:54 -0500
+Subject: Revert "build: Drop the install-tests option"
+
+Debian and Ubuntu uses these installed tests as part of their
+autopkgtest system
+
+This reverts commit 3121f88265ac61733e257f5335473d6f139f158c.
+---
+ docs/reference/gtk/building.md | 2 +-
+ meson.build | 1 +
+ meson_options.txt | 5 +++
+ testsuite/a11y/meson.build | 8 +++--
+ testsuite/css/change/meson.build | 30 ++++++++++++++--
+ testsuite/css/meson.build | 36 +++++++++++++++----
+ testsuite/css/nodes/meson.build | 76 +++++++++++++++++++++++++++++++++++++---
+ testsuite/css/parser/meson.build | 25 ++++++++++---
+ testsuite/css/style/meson.build | 58 ++++++++++++++++++++++++++++--
+ testsuite/gdk/meson.build | 46 +++++++++++++++++++-----
+ testsuite/gsk/meson.build | 25 +++++++++----
+ testsuite/gtk/meson.build | 50 ++++++++++++++++++++++++--
+ testsuite/tools/meson.build | 36 ++++++++++++++++---
+ 13 files changed, 354 insertions(+), 44 deletions(-)
+
+diff --git a/docs/reference/gtk/building.md b/docs/reference/gtk/building.md
+index 2be7da9..31073d1 100644
+--- a/docs/reference/gtk/building.md
++++ b/docs/reference/gtk/building.md
+@@ -294,7 +294,7 @@ is mainly useful for shortening turnaround times on developer
+ systems. Installed builds of GTK should always have introspection
+ support.
+
+-### `build-tests`, `demos`
++### `build-tests`, `install-tests`, `demos`
+
+ By default, GTK will build quite a few tests and demos.
+ While these are useful on a developer system, they are not
+diff --git a/meson.build b/meson.build
+index b7419c6..80304b0 100644
+--- a/meson.build
++++ b/meson.build
+@@ -885,6 +885,7 @@ summary('Introspection', build_gir, section: 'Build')
+ summary('Documentation', get_option('gtk_doc'), section: 'Build')
+ summary('Man pages', get_option('man-pages'), section: 'Build')
+ summary('Tests', get_option('build-tests'), section: 'Build')
++summary('Install tests', get_option('install-tests'), section: 'Build')
+ summary('Demos', get_option('demos'), section: 'Build')
+ summary('Examples', get_option('build-examples'), section: 'Build')
+
+diff --git a/meson_options.txt b/meson_options.txt
+index 18f6c13..c1df747 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -123,3 +123,8 @@ option('build-tests',
+ type: 'boolean',
+ value: true,
+ description : 'Build tests')
++
++option('install-tests',
++ type: 'boolean',
++ value: false,
++ description : 'Install tests')
+diff --git a/testsuite/a11y/meson.build b/testsuite/a11y/meson.build
+index c43465e..4547b21 100644
+--- a/testsuite/a11y/meson.build
++++ b/testsuite/a11y/meson.build
+@@ -1,3 +1,6 @@
++testexecdir = join_paths(installed_test_bindir, 'gtk')
++testdatadir = join_paths(installed_test_datadir, 'gtk')
++
+ # Available keys for each test:
+ #
+ # - 'name': the test name; used for the test and to determine the base
+@@ -61,11 +64,12 @@ foreach t : tests
+ test_extra_suites = t.get('suites', [])
+ test_timeout = 60
+
+- test_exe = executable(test_name,
+- sources: test_srcs,
++ test_exe = executable(test_name, test_srcs,
+ c_args: test_cargs + test_extra_cargs,
+ link_args: test_extra_ldflags,
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ if test_extra_suites.contains('slow')
+diff --git a/testsuite/css/change/meson.build b/testsuite/css/change/meson.build
+index a75b530..9409f48 100644
+--- a/testsuite/css/change/meson.build
++++ b/testsuite/css/change/meson.build
+@@ -7,10 +7,17 @@ changetest_env.set('GIO_USE_VFS', 'local')
+ changetest_env.set('GSETTINGS_BACKEND', 'memory')
+ changetest_env.set('G_ENABLE_DIAGNOSTIC', '0')
+
+-test_change = executable('test-css-change',
+- sources: ['test-css-change.c', '../../testutils.c'],
++testexecdir = join_paths(installed_test_bindir, 'css', 'change')
++testdatadir = join_paths(installed_test_datadir, 'css')
++
++test_change = executable(
++ 'test-css-change',
++ 'test-css-change.c',
++ '../../testutils.c',
+ c_args: common_cflags,
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test('change', test_change,
+@@ -19,3 +26,22 @@ test('change', test_change,
+ env: changetest_env,
+ suite: 'css',
+ )
++
++test_data = [
++ 'test1.css', 'test1.ui', 'test1.nodes',
++ 'test2.css', 'test2.ui', 'test2.nodes',
++ 'test3.css', 'test3.ui', 'test3.nodes',
++ 'test4.css', 'test4.ui', 'test4.nodes',
++]
++
++if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'change.test.in',
++ output: 'change.test',
++ configuration: conf,
++ install_dir: testdatadir)
++
++ install_data(test_data, install_dir: testexecdir)
++
++endif
+diff --git a/testsuite/css/meson.build b/testsuite/css/meson.build
+index 24084d6..20c0314 100644
+--- a/testsuite/css/meson.build
++++ b/testsuite/css/meson.build
+@@ -13,10 +13,14 @@ subdir('nodes')
+ subdir('style')
+ subdir('change')
+
+-test_api = executable('api',
+- sources: ['api.c'],
++testexecdir = join_paths(installed_test_bindir, 'css')
++testdatadir = join_paths(installed_test_datadir, 'css')
++
++test_api = executable('api', 'api.c',
+ c_args: common_cflags,
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test('api', test_api,
+@@ -26,11 +30,12 @@ test('api', test_api,
+ suite: 'css',
+ )
+
+-test_data = executable('data',
+- sources: ['data.c'],
++test_data = executable('data', 'data.c',
+ c_args: common_cflags,
+ include_directories: [confinc, ],
+ dependencies: libgtk_static_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test('data', test_data,
+@@ -40,10 +45,11 @@ test('data', test_data,
+ suite: 'css',
+ )
+
+-transition = executable('transition',
+- sources: ['transition.c'],
++transition = executable('transition', 'transition.c',
+ c_args: common_cflags,
+ dependencies: libgtk_static_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test('transition', transition,
+@@ -53,6 +59,24 @@ test('transition', transition,
+ suite: 'css'
+ )
+
++if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'api.test.in',
++ output: 'api.test',
++ configuration: conf,
++ install_dir: testdatadir,
++ )
++
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'data.test.in',
++ output: 'data.test',
++ configuration: conf,
++ install_dir: testdatadir,
++ )
++endif
++
+ if false and get_option ('profiler')
+
+ adwaita_env = csstest_env
+diff --git a/testsuite/css/nodes/meson.build b/testsuite/css/nodes/meson.build
+index 576b4d8..eb619cf 100644
+--- a/testsuite/css/nodes/meson.build
++++ b/testsuite/css/nodes/meson.build
+@@ -7,15 +7,81 @@ nodetest_env.set('GIO_USE_VFS', 'local')
+ nodetest_env.set('GSETTINGS_BACKEND', 'memory')
+ nodetest_env.set('G_ENABLE_DIAGNOSTIC', '0')
+
+-test_nodes = executable('test-css-nodes',
+- sources: ['test-css-nodes.c', '../../testutils.c'],
+- c_args: common_cflags,
+- dependencies: libgtk_dep,
+-)
++testexecdir = join_paths(installed_test_bindir, 'css', 'nodes')
++testdatadir = join_paths(installed_test_datadir, 'css')
+
++test_nodes = executable('test-css-nodes', 'test-css-nodes.c', '../../testutils.c',
++ c_args: common_cflags,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
++ dependencies: libgtk_dep)
+ test('nodes', test_nodes,
+ args: [ '--tap', '-k' ],
+ protocol: 'tap',
+ env: nodetest_env,
+ suite: 'css',
+ )
++
++test_data = [
++ 'box.ltr.nodes',
++ 'box.ltr.ui',
++ 'box.rtl.nodes',
++ 'box.rtl.ui',
++ 'buttons.nodes',
++ 'buttons.ui',
++ 'checkbutton.ltr.nodes',
++ 'checkbutton.ltr.ui',
++ 'checkbutton.rtl.nodes',
++ 'checkbutton.rtl.ui',
++ 'combobox.nodes',
++ 'combobox.ui',
++ 'entries.nodes',
++ 'entries.ui',
++ 'expander.ltr.nodes',
++ 'expander.ltr.ui',
++ 'expander.rtl.nodes',
++ 'expander.rtl.ui',
++ 'levelbar.ltr.nodes',
++ 'levelbar.ltr.ui',
++ 'levelbar.rtl.nodes',
++ 'levelbar.rtl.ui',
++ 'notebook-arrows2.nodes',
++ 'notebook-arrows2.ui',
++ 'notebook-arrows.nodes',
++ 'notebook-arrows.ui',
++ 'notebook.bottom.ltr.nodes',
++ 'notebook.bottom.ltr.ui',
++ 'notebook.bottom.rtl.nodes',
++ 'notebook.bottom.rtl.ui',
++ 'notebook.left.ltr.nodes',
++ 'notebook.left.ltr.ui',
++ 'notebook.left.rtl.nodes',
++ 'notebook.left.rtl.ui',
++ 'notebook.right.ltr.nodes',
++ 'notebook.right.ltr.ui',
++ 'notebook.right.rtl.nodes',
++ 'notebook.right.rtl.ui',
++ 'notebook.top.ltr.nodes',
++ 'notebook.top.ltr.ui',
++ 'notebook.top.rtl.nodes',
++ 'notebook.top.rtl.ui',
++ 'paned.ltr.nodes',
++ 'paned.ltr.ui',
++ 'paned.rtl.nodes',
++ 'paned.rtl.ui',
++ 'progressbar.nodes',
++ 'progressbar.ui',
++ 'scale.nodes',
++ 'scale.ui',
++]
++
++if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'nodes.test.in',
++ output: 'nodes.test',
++ configuration: conf,
++ install_dir: testdatadir)
++
++ install_data(test_data, install_dir: testexecdir)
++endif
+diff --git a/testsuite/css/parser/meson.build b/testsuite/css/parser/meson.build
+index b419c29..d0fdd0d 100644
+--- a/testsuite/css/parser/meson.build
++++ b/testsuite/css/parser/meson.build
+@@ -1,8 +1,11 @@
+-test_parser = executable('test-css-parser',
+- sources: ['test-css-parser.c', '../../testutils.c'],
+- c_args: common_cflags,
+- dependencies: libgtk_dep,
+-)
++testexecdir = join_paths(installed_test_bindir, 'css', 'parser')
++testdatadir = join_paths(installed_test_datadir, 'css')
++
++test_parser = executable('test-css-parser', 'test-css-parser.c', '../../testutils.c',
++ c_args: common_cflags,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
++ dependencies: libgtk_dep)
+
+ test_data = [
+ 'animation-crash-3.12.css',
+@@ -534,3 +537,15 @@ foreach testname : test_data
+ suite: 'css')
+ endif
+ endforeach
++
++if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'parser.test.in',
++ output: 'parser.test',
++ configuration: conf,
++ install_dir: testdatadir)
++
++ install_data(test_data, install_dir: testexecdir)
++
++endif
+diff --git a/testsuite/css/style/meson.build b/testsuite/css/style/meson.build
+index ef703d7..3228049 100644
+--- a/testsuite/css/style/meson.build
++++ b/testsuite/css/style/meson.build
+@@ -7,21 +7,73 @@ styletest_env.set('GIO_USE_VFS', 'local')
+ styletest_env.set('GSETTINGS_BACKEND', 'memory')
+ styletest_env.set('G_ENABLE_DIAGNOSTIC', '0')
+
++testexecdir = join_paths(installed_test_bindir, 'css', 'style')
++testdatadir = join_paths(installed_test_datadir, 'css')
++
+ cssresources = gnome.compile_resources(
+ 'cssresources',
+ 'test-css-style.gresource.xml',
+ source_dir: '.',
+ )
+
+-test_style = executable('test-css-style',
+- sources: ['test-css-style.c', '../../testutils.c', cssresources],
++test_style = executable(
++ 'test-css-style',
++ 'test-css-style.c',
++ '../../testutils.c',
++ cssresources,
+ c_args: common_cflags,
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+-
+ test('style', test_style,
+ args: [ '--tap', '-k' ],
+ protocol: 'tap',
+ env: styletest_env,
+ suite: 'css',
+ )
++
++test_data = [
++ 'adjacent-states.css',
++ 'adjacent-states.nodes',
++ 'adjacent-states.ui',
++ 'bloomfilter-not.css',
++ 'bloomfilter-not.nodes',
++ 'bloomfilter-not.ui',
++ 'colornames.css',
++ 'colornames.nodes',
++ 'colornames.ui',
++ 'currentcolor.css',
++ 'currentcolor.nodes',
++ 'currentcolor.ui',
++ 'font.css',
++ 'font.nodes',
++ 'font.ui',
++ 'gradient.css',
++ 'gradient.nodes',
++ 'gradient.ui',
++ 'gtk.css',
++ 'inherit.css',
++ 'inherit.nodes',
++ 'inherit.ui',
++ 'label.css',
++ 'label.nodes',
++ 'label.ui',
++ 'misc.css',
++ 'misc.nodes',
++ 'misc.ui',
++ 'nth-child.css',
++ 'nth-child.nodes',
++ 'nth-child.ui',
++]
++
++if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('libexecdir', gtk_libexecdir)
++ configure_file(input: 'style.test.in',
++ output: 'style.test',
++ configuration: conf,
++ install_dir: testdatadir)
++
++ install_data(test_data, install_dir: testexecdir)
++endif
+diff --git a/testsuite/gdk/meson.build b/testsuite/gdk/meson.build
+index cd36ba0..45c4744 100644
+--- a/testsuite/gdk/meson.build
++++ b/testsuite/gdk/meson.build
+@@ -1,10 +1,13 @@
++testexecdir = join_paths(installed_test_bindir, 'gdk')
++testdatadir = join_paths(installed_test_datadir, 'gdk')
++
+ clipboard_client = executable('clipboard-client',
+- sources: ['clipboard-client.c'],
+- include_directories: [confinc],
+- c_args: common_cflags,
+- dependencies: [ libgtk_dep ],
+- install: false,
+-)
++ sources: ['clipboard-client.c'],
++ include_directories: [confinc],
++ c_args: common_cflags,
++ dependencies: [ libgtk_dep ],
++ install: get_option('install-tests'),
++ install_dir: testexecdir)
+
+ tests = [
+ { 'name': 'array' },
+@@ -34,7 +37,8 @@ foreach t : tests
+ sources: '@0@.c'.format(test_name),
+ c_args: common_cflags,
+ dependencies: libgtk_dep,
+- install: false,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ suites = ['gdk'] + t.get('suites', [])
+@@ -61,7 +65,8 @@ foreach t : internal_tests
+ test_exe = executable(t, '@0@.c'.format(t),
+ c_args: common_cflags,
+ dependencies: libgtk_static_dep,
+- install: false,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test(t, test_exe,
+@@ -75,3 +80,28 @@ foreach t : internal_tests
+ suite: 'gdk',
+ )
+ endforeach
++
++
++if get_option('install-tests')
++ foreach t : tests
++ test_name = t.get('name')
++ suites = t.get('suites', [])
++
++ if suites.contains('flaky') or suites.contains('failing')
++ continue
++ endif
++
++ test_cdata = configuration_data()
++ test_cdata.set('testexecdir', testexecdir)
++ test_cdata.set('test', test_name)
++ configure_file(input: 'gdk.test.in',
++ output: '@0@.test'.format(test_name),
++ configuration: test_cdata,
++ install: true,
++ install_dir: testdatadir,
++ )
++ endforeach
++
++ install_subdir('clipboard-data', install_dir: testexecdir)
++ install_subdir('image-data', install_dir: testexecdir)
++endif
+diff --git a/testsuite/gsk/meson.build b/testsuite/gsk/meson.build
+index 1897562..67514eb 100644
+--- a/testsuite/gsk/meson.build
++++ b/testsuite/gsk/meson.build
+@@ -1,12 +1,22 @@
+-compare_render = executable('compare-render',
++testexecdir = join_paths(installed_test_bindir, 'gsk')
++testdatadir = join_paths(installed_test_datadir, 'gsk')
++
++compare_render = executable(
++ 'compare-render',
+ ['compare-render.c', '../reftests/reftest-compare.c'],
+ dependencies: libgtk_dep,
+ c_args: common_cflags,
++ install: get_option('install-tests'),
++ install_dir: testexecdir
+ )
+
+-node_parser = executable('node-parser', 'node-parser.c',
++node_parser = executable(
++ 'node-parser',
++ ['node-parser.c'],
+ dependencies: libgtk_dep,
+ c_args: common_cflags,
++ install: get_option('install-tests'),
++ install_dir: testexecdir
+ )
+
+ compare_render_tests = [
+@@ -256,9 +266,11 @@ foreach t : tests
+ test_extra_ldflags = t.get(3, [])
+
+ test_exe = executable(test_name, test_srcs,
+- dependencies : libgtk_dep,
+ c_args : test_cargs + test_extra_cargs + common_cflags,
+ link_args : test_extra_ldflags,
++ dependencies : libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test(test_name, test_exe,
+@@ -287,11 +299,12 @@ foreach t : internal_tests
+ test_extra_cargs = t.get(2, [])
+ test_extra_ldflags = t.get(3, [])
+
+- test_exe = executable(test_name,
+- sources: test_srcs,
+- dependencies : libgtk_static_dep,
++ test_exe = executable(test_name, test_srcs,
+ c_args : test_cargs + test_extra_cargs + common_cflags,
+ link_args : test_extra_ldflags,
++ dependencies : libgtk_static_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ test(test_name, test_exe,
+diff --git a/testsuite/gtk/meson.build b/testsuite/gtk/meson.build
+index 73dd136..3c107ef 100644
+--- a/testsuite/gtk/meson.build
++++ b/testsuite/gtk/meson.build
+@@ -1,3 +1,6 @@
++testexecdir = join_paths(installed_test_bindir, 'gtk')
++testdatadir = join_paths(installed_test_datadir, 'gtk')
++
+ gtk_tests_export_dynamic_ldflag = []
+
+ if cc.get_id() != 'msvc'
+@@ -169,6 +172,8 @@ foreach t : tests
+ c_args: test_cargs + test_extra_cargs,
+ link_args: test_extra_ldflags,
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ if test_extra_suites.contains('slow')
+@@ -197,6 +202,8 @@ foreach t : internal_tests
+ c_args: test_cargs + test_extra_cargs,
+ link_args: test_extra_ldflags,
+ dependencies: libgtk_static_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+
+ if test_extra_suites.contains('slow')
+@@ -215,8 +222,10 @@ endforeach
+ # FIXME: if objc autotestkeywords_CPPFLAGS += -DHAVE_OBJC=1 -x objective-c++
+ if add_languages('cpp', required: false, native: false)
+ test_exe = executable('autotestkeywords',
+- sources: ['autotestkeywords.cc'],
++ sources: 'autotestkeywords.cc',
+ dependencies: libgtk_dep,
++ install: get_option('install-tests'),
++ install_dir: testexecdir,
+ )
+ test('c++ keywords', test_exe,
+ args: [ '--tap', '-k' ],
+@@ -224,6 +233,16 @@ if add_languages('cpp', required: false, native: false)
+ env: test_env,
+ suite: 'gtk',
+ )
++ if get_option('install-tests')
++ conf = configuration_data()
++ conf.set('testexecdir', testexecdir)
++ conf.set('test', 'autotestkeywords')
++ configure_file(input: 'gtk.test.in',
++ output: 'autotestkeywords.test',
++ configuration: conf,
++ install_dir: testdatadir,
++ )
++ endif
+ endif
+
+
+@@ -249,10 +268,13 @@ focus_chain_tests = [
+ #[ 'widget-factory3', 'tab-backward' ],
+ ]
+
+-focus_chain = executable('test-focus-chain',
++focus_chain = executable(
++ 'test-focus-chain',
+ sources: ['test-focus-chain.c', '../testutils.c'],
+ dependencies: libgtk_dep,
+ c_args: common_cflags,
++ install: get_option('install-tests'),
++ install_dir: testexecdir
+ )
+
+ foreach test : focus_chain_tests
+@@ -274,6 +296,30 @@ test('potfiles', make_pot,
+ workdir: meson.project_source_root(),
+ suite: ['gtk', 'translations' ])
+
++if get_option('install-tests')
++ foreach t : tests
++ test_name = t.get('name')
++ suites = t.get('suites', [])
++
++ if suites.contains('flaky') or suites.contains('failing')
++ continue
++ endif
++
++ conf = configuration_data()
++ conf.set('testexecdir', testexecdir)
++ conf.set('test', test_name)
++ configure_file(input: 'gtk.test.in',
++ output: '@0@.test'.format(test_name),
++ configuration: conf,
++ install_dir: testdatadir,
++ )
++ endforeach
++
++ install_subdir('icons', install_dir: testexecdir)
++ install_subdir('icons2', install_dir: testexecdir)
++ install_subdir('ui', install_dir: testexecdir)
++endif
++
+ if false and get_option ('profiler')
+
+ performance_env = test_env
+diff --git a/testsuite/tools/meson.build b/testsuite/tools/meson.build
+index 986c2d6..582bce6 100644
+--- a/testsuite/tools/meson.build
++++ b/testsuite/tools/meson.build
+@@ -1,12 +1,23 @@
++testexecdir = join_paths(installed_test_bindir, 'tools')
++testdatadir = join_paths(installed_test_datadir, 'tools')
++
+ bash = find_program('bash', required : false)
+ if bash.found()
+ test_env = environment()
+
+ foreach t : ['simplify', 'simplify-3to4', 'validate', 'settings']
+- configure_file(output: t,
+- input: '@0@.in'.format(t),
+- copy: true,
+- )
++ if get_option('install-tests')
++ configure_file(output: t,
++ input: '@0@.in'.format(t),
++ copy: true,
++ install_dir: testexecdir,
++ )
++ else
++ configure_file(output: t,
++ input: '@0@.in'.format(t),
++ copy: true,
++ )
++ endif
+ test(t, bash,
+ args: t,
+ workdir: meson.current_build_dir(),
+@@ -23,3 +34,20 @@ if bash.found()
+ )
+ endforeach
+ endif
++
++if get_option('install-tests')
++ foreach t : ['simplify', 'settings']
++ test_conf = configuration_data()
++ test_conf.set('testexecdir', testexecdir)
++ test_conf.set('test', t)
++ configure_file(output: '@0@.test'.format(t),
++ input: 'tools.test.in',
++ configuration: test_conf,
++ install_dir: testdatadir,
++ )
++ endforeach
++
++ install_subdir('simplify-data', install_dir: testexecdir)
++ install_subdir('simplify-data-3to4', install_dir: testexecdir)
++ install_subdir('validate-data', install_dir: testexecdir)
++endif